package fr.chrysalis.ui.components.core
{
	
	import flash.text.TextFormat;
	import flash.utils.Dictionary;
	import fr.chrysalis.utils.Debug;

	public class Style
	{
		
		/**
		 * Nom du style par default 
		 */
		public static const DEFAULT:String = 'default';
		
		/**
		 * Contient la liste des styles sauvegardés 
		 */
		private static var library:Dictionary = new Dictionary();
		
		/**
		 * Nom du style 
		 */
		public var name:String;
		/**
		 * Format associé au style 
		 */
		public var format:TextFormat;
		
		/**
		 * Ajoute un style 
		 * @param name Nom du style 
		 * @param format Format du style
		 * 
		 */
		public function Style(name:String, format:TextFormat)
		{
			if(!format.color){
				format.color = 0x000000;
			}
			
			this.name = name;
			this.format = format;
			
			Style.library[name] = this;
		}
		
		/**
		 * Récupération d'un style 
		 * @param name Nom du style à récupérer
		 * @return Style choisi
		 * 
		 */
		public static function get(name:String):Style
		{
			if(Style.library[name] != undefined){
				return Style.library[name];
			}
			return null;
		}
		
		/**
		 * Affiche dans la console la liste des styles présents 
		 */
		public static function dump():void{
			Debug.dump('----------------------------');
			Debug.dump('Liste des styles disponibles');
			Debug.dump(Style.library);
			Debug.dump('----------------------------');
			Debug.dump('');
		}
		
		public function toString():String {
			return '[Style name: ' + this.name + ', font: ' + this.format.font + ', color: #' + this.format.color.toString(16) + ', size: ' + this.format.size + 'px, bold: ' + this.format.bold + ']';
		}
	}
}